/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
/**
 *
 * @author Utilizador
 */
@Entity
@Table(name = "PRODUTO_CATALOGO", uniqueConstraints = @UniqueConstraint(columnNames = "NOME"))
@NamedQuery(name = "findAllProdutosCatalogo", query = "SELECT p FROM ProdutoCatalogo p")


public class ProdutoCatalogo implements Serializable {
    
    @Id
    private int id;
    

    private float preco;

    private String referencia;

    private String laboratorio;

    private String nome;
    
    
    @OneToMany(mappedBy = "produtoCatalogo")

    private List<ProdutoFisico> listaProdutosFisicos;

    @ManyToMany

    private List<LinhaEncomenda> listaLinhasEncomendas;
    
    @OneToMany(mappedBy = "produtoCatalogo")

    private List<LinhaVenda> listaLinhasVendas;
    
    @ManyToMany

    private List<Fornecedor> listaFornecedores;
    
    @OneToOne
    private Stock stock;
     
    public ProdutoCatalogo() {
    
    }

    public ProdutoCatalogo(int id, String referencia, float preco, String laboratorio, Stock stock) {
        this.id = id;
        this.referencia = referencia;
        this.preco = preco;
        this.laboratorio = laboratorio;
        this.stock = stock;
        this.listaFornecedores = new ArrayList<>();
        this.listaLinhasEncomendas = new ArrayList<>();
        this.listaLinhasVendas = new ArrayList<>();
        this.listaProdutosFisicos = new ArrayList<>();
    }
    
    
        public ProdutoCatalogo(int id, String referencia, String nome, float preco, String laboratorio) {
        this.id = id;
        this.referencia = referencia;
        this.preco = preco;
        this.nome = nome;
        this.laboratorio = laboratorio;
        this.listaFornecedores = new ArrayList<>();
        this.listaLinhasEncomendas = new ArrayList<>();
        this.listaLinhasVendas = new ArrayList<>();
        this.listaProdutosFisicos = new ArrayList<>();
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public float getPreco() {
        return preco;
    }

    public void setPreco(float preco) {
        this.preco = preco;
    }

    public String getReferencia() {
        return referencia;
    }

    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }

    public String getLaboratorio() {
        return laboratorio;
    }

    public void setLaboratorio(String laboratorio) {
        this.laboratorio = laboratorio;
    }

    public List<ProdutoFisico> getListaProdutosFisicos() {
        return listaProdutosFisicos;
    }

    public void setListaProdutosFisicos(List<ProdutoFisico> listaProdutosFisicos) {
        this.listaProdutosFisicos = listaProdutosFisicos;
    }

    public List<LinhaEncomenda> getListaLinhasEncomendas() {
        return listaLinhasEncomendas;
    }

    public void setListaLinhasEncomendas(List<LinhaEncomenda> listaLinhasEncomendas) {
        this.listaLinhasEncomendas = listaLinhasEncomendas;
    }

    public List<LinhaVenda> getListaLinhasVendas() {
        return listaLinhasVendas;
    }

    public void setListaLinhasVendas(List<LinhaVenda> listaLinhasVendas) {
        this.listaLinhasVendas = listaLinhasVendas;
    }

    public List<Fornecedor> getListaFornecedores() {
        return listaFornecedores;
    }

    public void setListaFornecedores(List<Fornecedor> listaFornecedores) {
        this.listaFornecedores = listaFornecedores;
    }

    public Stock getStock() {
        return stock;
    }

    public void setStock(Stock Stock) {
        this.stock = Stock;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void adicionarProdutoFisico(ProdutoFisico produtoFisico) {
        listaProdutosFisicos.add(produtoFisico);
    }

    public void removerProdutoFisico(ProdutoFisico produtoFisico) {
        listaProdutosFisicos.remove(produtoFisico);
    }
    
    

    
    
}
